home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_08_11 / 8n11111a < prev    next >
Text File  |  1990-09-18  |  1KB  |  41 lines

  1.  
  2.  
  3. struct timer *
  4. timer_declare(time,event)
  5. unsigned int time;              /* time to wait in 10msec ticks */
  6. char *event;
  7. {
  8.         struct timer *t;
  9.  
  10.         disable_interrupts();
  11.  
  12.         for (t=timers;t<&timers[MAX_TIMERS];t++) {
  13.                 if (!t->inuse) break;
  14.         }
  15.  
  16.         /* out of timers? */
  17.         if (t == &timers[MAX_TIMERS]) return(0);
  18.  
  19.         /* install new timer */
  20.         t->event = event;
  21.         t->time = time;
  22.         if (!timer_next) {
  23.                 /* no timers set at all, so this is shortest */
  24.                 time_timer_set = time_now;
  25.                 start_physical_timer((timer_next = t)->time);
  26.         } else if ((time + time_now) < (timer_next->time + time_timer_set)) {
  27.                 /* new timer is shorter than current one, so */
  28.                 timers_update(time_now - time_timer_set);
  29.                 time_timer_set = time_now;
  30.                 start_physical_timer((timer_next = t)->time);
  31.         } else {
  32.                 /* new timer is longer, than current one */
  33.         }
  34.         t->inuse = TRUE;
  35.         enable_interrupts();
  36.         return(t);
  37. }
  38.  
  39. listing 5
  40.  
  41.